home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #1 / Amiga Plus CD - 2000 - No. 1.iso / Tools / Dev / Meshwriter / MeshWriterTest / modules / cubetower.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-03  |  4.6 KB  |  152 lines

  1. /*
  2. **      $VER: cubetower.c 1.00 (20.3.1999)
  3. **
  4. **      Creation date     : 20.3.1999
  5. **
  6. **      Description       :
  7. **         MeshWriter testprogram shape module.
  8. **
  9. **
  10. **      Written by Stephan Bielmann
  11. **
  12. */
  13.  
  14. /*************************** Includes *******************************/
  15.  
  16. #ifndef WITHMWLLIB
  17. #include "//meshlib.h"
  18. #else
  19. #include <meshwriter/meshwriter.h>
  20. #include <pragma/meshwriter_lib.h>
  21. #endif
  22.  
  23. /**************************** Defines *******************************/
  24.  
  25. /*********************** Type definitions ***************************/
  26.  
  27. /********************** Private functions ***************************/
  28. static void cube(ULONG mesh, ULONG color) {
  29.   TOCLVertex v1,v2,v3,v4,v5,v6,v7,v8;
  30.  
  31.   v1.x=-0.5,v1.y=-0.5,v1.z=-0.5;
  32.   v2.x=0.5,v2.y=-0.5,v2.z=-0.5;
  33.   v3.x=0.5,v3.y=0.5,v3.z=-0.5;
  34.   v4.x=-0.5,v4.y=0.5,v4.z=-0.5;
  35.   v5.x=-0.5,v5.y=-0.5,v5.z=0.5;
  36.   v6.x=0.5,v6.y=-0.5,v6.z=0.5;
  37.   v7.x=0.5,v7.y=0.5,v7.z=0.5;
  38.   v8.x=-0.5,v8.y=0.5,v8.z=0.5;
  39.  
  40.   MWLMeshTriangleAdd(mesh,color,&v1,&v2,&v3);
  41.   MWLMeshTriangleAdd(mesh,color,&v1,&v3,&v4);
  42.  
  43.   MWLMeshTriangleAdd(mesh,color,&v5,&v6,&v7);
  44.   MWLMeshTriangleAdd(mesh,color,&v5,&v7,&v8);
  45.  
  46.   MWLMeshTriangleAdd(mesh,color,&v4,&v1,&v5);
  47.   MWLMeshTriangleAdd(mesh,color,&v4,&v5,&v8);
  48.  
  49.   MWLMeshTriangleAdd(mesh,color,&v7,&v6,&v2);
  50.   MWLMeshTriangleAdd(mesh,color,&v7,&v2,&v3);
  51.  
  52.   MWLMeshTriangleAdd(mesh,color,&v1,&v6,&v5);
  53.   MWLMeshTriangleAdd(mesh,color,&v1,&v2,&v6);
  54.  
  55.   MWLMeshTriangleAdd(mesh,color,&v4,&v8,&v7);
  56.   MWLMeshTriangleAdd(mesh,color,&v4,&v7,&v3);
  57. }
  58.  
  59. /********************** Public functions ****************************/
  60.  
  61. /********************************************************************\
  62. *                                                                    *
  63. * Name         : cubetower                                           *
  64. *                                                                    *
  65. * Description  : Draws a tower of cubes with the help of the scaling *
  66. *                and translation functions.                          *
  67. *                                                                    *
  68. * Arguments    : mesh    IN  : An initialized mesh handle.           *
  69. *                                                                    *
  70. * Comment      :                                                     *
  71. *                                                                    *
  72. \********************************************************************/
  73. void cubetower (ULONG mesh) {
  74.   ULONG red,green,blue,white,black;
  75.   TOCLColor color;
  76.   TOCLVertex vt,vs;
  77.   
  78.   MWLMeshMaterialAdd(mesh,&red);
  79.   color.r=255,color.g=0,color.b=0;
  80.   MWLMeshMaterialNameSet(mesh,red,"Red");
  81.   MWLMeshMaterialDiffuseColorSet(mesh,red,&color);
  82.   MWLMeshMaterialShininessSet(mesh,red,0);
  83.   MWLMeshMaterialTransparencySet(mesh,red,0);
  84.  
  85.   MWLMeshMaterialAdd(mesh,&green);
  86.   color.r=0,color.g=255,color.b=0;
  87.   MWLMeshMaterialNameSet(mesh,green,"Green");
  88.   MWLMeshMaterialDiffuseColorSet(mesh,green,&color);
  89.   MWLMeshMaterialShininessSet(mesh,green,0);
  90.   MWLMeshMaterialTransparencySet(mesh,green,0);
  91.  
  92.   MWLMeshMaterialAdd(mesh,&blue);
  93.   color.r=0,color.g=0,color.b=255;
  94.   MWLMeshMaterialNameSet(mesh,blue,"Blue");
  95.   MWLMeshMaterialDiffuseColorSet(mesh,blue,&color);
  96.   MWLMeshMaterialShininessSet(mesh,blue,0);
  97.   MWLMeshMaterialTransparencySet(mesh,blue,0);
  98.  
  99.   MWLMeshMaterialAdd(mesh,&white);
  100.   color.r=255,color.g=255,color.b=255;
  101.   MWLMeshMaterialNameSet(mesh,white,"White");
  102.   MWLMeshMaterialDiffuseColorSet(mesh,white,&color);
  103.   MWLMeshMaterialShininessSet(mesh,white,0);
  104.   MWLMeshMaterialTransparencySet(mesh,white,0);
  105.  
  106.   MWLMeshMaterialAdd(mesh,&black);
  107.   color.r=0,color.g=0,color.b=0;
  108.   MWLMeshMaterialNameSet(mesh,black,"Black");
  109.   MWLMeshMaterialDiffuseColorSet(mesh,black,&color);
  110.   MWLMeshMaterialShininessSet(mesh,black,0);
  111.   MWLMeshMaterialTransparencySet(mesh,black,0);
  112.  
  113.   MWLMeshNameSet(mesh,"Cubetower");
  114.  
  115.   vs.x=10,vs.y=10,vs.z=10;
  116.  
  117.   MWLMeshScaleChange(mesh,&vs,CTMSET);
  118.   cube(mesh,black);
  119.  
  120.   vs.x=2,vs.y=2,vs.z=2;
  121.  
  122.   MWLMeshScaleGet(mesh,&vt);
  123.   vt.x=0;vt.y=0;vt.z-=1;
  124.  
  125.   MWLMeshScaleChange(mesh,&vs,CTMSUB);
  126.   MWLMeshTranslationChange(mesh,&vt,CTMSET);
  127.   cube(mesh,red);
  128.  
  129.   MWLMeshScaleGet(mesh,&vt);
  130.   vt.x=0;vt.y=0;vt.z-=1;
  131.  
  132.   MWLMeshScaleChange(mesh,&vs,CTMSUB);
  133.   MWLMeshTranslationChange(mesh,&vt,CTMADD);
  134.   cube(mesh,blue);
  135.  
  136.   MWLMeshScaleGet(mesh,&vt);
  137.   vt.x=0;vt.y=0;vt.z-=1;
  138.  
  139.   MWLMeshScaleChange(mesh,&vs,CTMSUB);
  140.   MWLMeshTranslationChange(mesh,&vt,CTMADD);
  141.   cube(mesh,green);
  142.  
  143.   MWLMeshScaleGet(mesh,&vt);
  144.   vt.x=0;vt.y=0;vt.z-=1;
  145.  
  146.   MWLMeshScaleChange(mesh,&vs,CTMSUB);
  147.   MWLMeshTranslationChange(mesh,&vt,CTMADD);
  148.   cube(mesh,white);
  149. }
  150.  
  151. /************************* End of file ******************************/
  152.